package EnumDemo;

/**
 * @Description :
 * @author: cww
 * @DateTime: 2018-07-29 10:31
 * 定义一个对象，这个对象里面规定好了周一到周日分别用0-6来表示，不让外部创建，需要用到的值在改对象中都定义好
 */

public abstract class WeakDayAbstract {

    private WeakDayAbstract(){}

    /**
     * 4.nextDay用独立的方法写
     * 每一个值对象都有自己的一个方法进行返回
     * 那就要将nextDay进行抽象，具体实现让子类自己去实现
     * @return
     */
    public abstract WeakDayAbstract nextDay();


    /**
     * 5.nextDay抽象后，每一个子类就要去实现抽象方法nextDay()
     * 这里使用的是匿名内部类，因为这里是直接用WeakDayAbstract的子类去new一个新的对象，直接在后面加上{}。这个子类是没有名字的
     * ，所以是匿名内部类，{}里面去覆盖父类的方法
     */
    public final static WeakDayAbstract SUM = new WeakDayAbstract(){


        /**
         * 继承父类的抽象方法
         * @return
         */
        @Override
        public WeakDayAbstract nextDay() {
            return MON;
        }
    };
    public final static WeakDayAbstract MON = new WeakDayAbstract(){

            @Override
            public WeakDayAbstract nextDay() {
                return TUE;
            }
        };
    public final static WeakDayAbstract TUE = new WeakDayAbstract(){
            @Override
            public WeakDayAbstract nextDay() {
                return SUM;
            }
        };

    /**
     * 3.对象方法
     * 使用if else方法返回
     * @return
     */
/*    public WeakDay netDay(){
        if (this == SUM) {
            return MON;
        }else if (this == MON){
            return TUE;
        }else {
            return SUM;
        }
    }*/




    /**
     * 复写toString方法
     * @return
     */
    @Override
    public String toString(){
        return (this == SUM)?"SUM":(this == MON)?"MON":"TUE";
    }
}
